package ig.ejb.metrica.da.session;

import ig.ejb.metrica.da.AccionesflujosLocal;
import ig.ejb.metrica.da.util.AccionesflujosDTO;
import static ig.ejb.metrica.da.util.IAccionesFlujos.*;
import static ig.ejb.metrica.da.util.IComun.*;
import java.sql.Date;
import java.sql.Timestamp;
import java.util.Collection;
import javax.ejb.*;

/**
 * This is the bean class for the AccionesFlujosSBBean enterprise bean.
 * Created 2/08/2006 11:41:36 AM
 * @author jsanchez
 */
public class AccionesFlujosSBBean implements SessionBean, AccionesFlujosSBRemoteBusiness, AccionesFlujosSBLocalBusiness {
    private SessionContext context;
    
    // <editor-fold defaultstate="collapsed" desc="EJB infrastructure methods. Click the + sign on the left to edit the code.">
    // TODO Add code to acquire and use other enterprise resources (DataSource, JMS, enterprise bean, Web services)
    // TODO Add business methods or web service operations
    /**
     * @see javax.ejb.SessionBean#setSessionContext(javax.ejb.SessionContext)
     */
    public void setSessionContext(SessionContext aContext) {
        context = aContext;
    }
    
    /**
     * @see javax.ejb.SessionBean#ejbActivate()
     */
    public void ejbActivate() {
        
    }
    
    /**
     * @see javax.ejb.SessionBean#ejbPassivate()
     */
    public void ejbPassivate() {
        
    }
    
    /**
     * @see javax.ejb.SessionBean#ejbRemove()
     */
    public void ejbRemove() {
        
    }
    // </editor-fold>
    
    /**
     * See section 7.10.3 of the EJB 2.0 specification
     * See section 7.11.3 of the EJB 2.1 specification
     */
    public void ejbCreate() {
        // TODO implement ejbCreate if necessary, acquire resources
        // This method has access to the JNDI context so resource aquisition
        // spanning all methods can be performed here such as home interfaces
        // and data sources.
    }
    
    
    
    // Add business logic below. (Right-click in editor and choose
    // "EJB Methods > Add Business Method" or "Web Service > Add Operation")
    public Object findByObject(Object ... obj) throws java.lang.Exception {
        //TODO implement findByObject
        if(obj==NULL || obj.length==0 || obj[0].equals(ALL)){
            return this.lookupAccionesflujosBean().findAll();
        }else if(obj[0].equals(ig.ejb.metrica.da.util.IComun.Id)){
//            return this.lookupAccionesflujosBean().findById((Integer) obj[1]);
        }else if(obj[0].equals(ig.ejb.metrica.da.util.IComun.FechaCorte)){
            return this.lookupAccionesflujosBean().findByFechaCorte((Timestamp) obj[1]);
        }
        return null;
    }
    
    /**
     *Elimina uno o mas registros dependiendo de los objeto enviado
     */
    public void removeByObject(Object ... obj) throws java.lang.Exception {
        //TODO implement removeByObject
        if(obj==NULL || obj.length==0){
            throw new Exception("No se eliminaron Acciones Flujos.");
        }else if(obj[0] instanceof String){
            if(obj[0].equals(ig.ejb.metrica.da.util.IComun.Id)){
                this.lookupAccionesflujosBean().findByPrimaryKey((Integer) obj[1]).remove();
            }else if(obj[0].equals(ig.ejb.metrica.da.util.IComun.FechaCorte)){
                Collection c=this.lookupAccionesflujosBean().findByFechaCorte((Timestamp) obj[1]);
                for (Object elem : c) {
                    ((AccionesflujosLocal)elem).remove();
                }
            }
        }else if(obj[0] instanceof Collection){
            for (Object elem : (Collection)obj[0]) {
                this.lookupAccionesflujosBean().findByPrimaryKey(((AccionesflujosDTO)elem).getId()).remove();
            }
        }
    }
    
    public void createNewObject(Object ... obj) throws java.lang.Exception {
        if(obj==NULL || obj.length==0){
            throw new Exception("No se crearon Acciones Flujos.");
        }else if(obj[0] instanceof Collection){
            for (Object elem : (Collection)obj[0]) {
                this.lookupAccionesflujosBean().create(ig.util.KeyGenerator.getInstance().getNewKey(),((AccionesflujosDTO)elem).getId(),((AccionesflujosDTO)elem).getFechaCorte(),((AccionesflujosDTO)elem).getNombreAccion(),((AccionesflujosDTO)elem).getFecha(),((AccionesflujosDTO)elem).getCapital(),((AccionesflujosDTO)elem).getInteresFijo(),((AccionesflujosDTO)elem).getInteresVariable(),((AccionesflujosDTO)elem).getConocido());
            }
        }else if(obj[0] instanceof AccionesflujosDTO){
            this.lookupAccionesflujosBean().create(
                    ig.util.KeyGenerator.getInstance().getNewKey(),
                    ((AccionesflujosDTO)obj[0]).getId(),
                    ((AccionesflujosDTO)obj[0]).getFechaCorte(),
                    ((AccionesflujosDTO)obj[0]).getNombreAccion(),
                    ((AccionesflujosDTO)obj[0]).getFecha(),
                    ((AccionesflujosDTO)obj[0]).getCapital(),
                    ((AccionesflujosDTO)obj[0]).getInteresFijo(),
                    ((AccionesflujosDTO)obj[0]).getInteresVariable(),
                    ((AccionesflujosDTO)obj[0]).getConocido());
        }
    }
    private ig.ejb.metrica.da.AccionesflujosLocalHome rv =null;
    private ig.ejb.metrica.da.AccionesflujosLocalHome lookupAccionesflujosBean() {
        try {
            if(rv==null){
                javax.naming.Context c = new javax.naming.InitialContext();
                rv = (ig.ejb.metrica.da.AccionesflujosLocalHome) c.lookup("java:comp/env/ejb/AccionesflujosBean");
            }
            return rv;
        } catch(javax.naming.NamingException ne) {
            java.util.logging.Logger.getLogger(getClass().getName()).log(java.util.logging.Level.SEVERE,"exception caught" ,ne);
            throw new RuntimeException(ne);
        }
    }
    
}
